home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / optivc16 / vfmath.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-03-06  |  24.7 KB  |  465 lines

  1. /*  VFmath.h
  2.  
  3.   vector management functions:
  4.   math functions performed on each individual element of an
  5.   array or vector of the data type "float";   real numbers
  6.  
  7.   Copyright (c) 1996-1999 by Martin Sander
  8.   All Rights Reserved.
  9. */
  10.  
  11. #ifndef __VFMATH_H
  12. #define __VFMATH_H
  13.  
  14. #ifndef __VFSTD_H 
  15. #include <VFstd.h>
  16. #endif
  17.  
  18. #ifdef __cplusplus
  19. extern "C" {
  20. #endif
  21.  
  22.  
  23.  
  24. /**************************  Rounding **********************************/
  25.  
  26. int  __vf   VF_round(  fVector  Y, fVector X, ui size );
  27. int  __vf   VF_roundtoBI( biVector Y, fVector X, ui size );
  28. int  __vf   VF_roundtoSI( siVector Y, fVector X, ui size );
  29. int  __vf   VF_roundtoI(  iVector  Y, fVector X, ui size );
  30. int  __vf   VF_roundtoLI( liVector Y, fVector X, ui size );
  31. int  __vf   VF_roundtoQI( qiVector Y, fVector X, ui size );
  32. int  __vf   VF_roundtoUB( ubVector Y, fVector X, ui size );
  33. int  __vf   VF_roundtoUS( usVector Y, fVector X, ui size );
  34. int  __vf   VF_roundtoU(  uVector  Y, fVector X, ui size );
  35. int  __vf   VF_roundtoUL( ulVector Y, fVector X, ui size );
  36.  
  37. int  __vf   VF_floor(  fVector  Y, fVector X, ui size );
  38. int  __vf   VF_floortoBI( biVector Y, fVector X, ui size );
  39. int  __vf   VF_floortoSI( siVector Y, fVector X, ui size );
  40. int  __vf   VF_floortoI(  iVector  Y, fVector X, ui size );
  41. int  __vf   VF_floortoLI( liVector Y, fVector X, ui size );
  42. int  __vf   VF_floortoQI( qiVector Y, fVector X, ui size );
  43. int  __vf   VF_floortoUB( ubVector Y, fVector X, ui size );
  44. int  __vf   VF_floortoUS( usVector Y, fVector X, ui size );
  45. int  __vf   VF_floortoU(  uVector  Y, fVector X, ui size );
  46. int  __vf   VF_floortoUL( ulVector Y, fVector X, ui size );
  47.  
  48. int  __vf   VF_ceil(  fVector  Y, fVector X, ui size );
  49. int  __vf   VF_ceiltoBI( biVector Y, fVector X, ui size );
  50. int  __vf   VF_ceiltoSI( siVector Y, fVector X, ui size );
  51. int  __vf   VF_ceiltoI(  iVector  Y, fVector X, ui size );
  52. int  __vf   VF_ceiltoLI( liVector Y, fVector X, ui size );
  53. int  __vf   VF_ceiltoQI( qiVector Y, fVector X, ui size );
  54. int  __vf   VF_ceiltoUB( ubVector Y, fVector X, ui size );
  55. int  __vf   VF_ceiltoUS( usVector Y, fVector X, ui size );
  56. int  __vf   VF_ceiltoU(  uVector  Y, fVector X, ui size );
  57. int  __vf   VF_ceiltoUL( ulVector Y, fVector X, ui size );
  58.  
  59. int  __vf   VF_chop(  fVector  Y, fVector X, ui size );
  60. int  __vf   VF_choptoBI( biVector Y, fVector X, ui size );
  61. int  __vf   VF_choptoSI( siVector Y, fVector X, ui size );
  62. int  __vf   VF_choptoI(  iVector  Y, fVector X, ui size );
  63. int  __vf   VF_choptoLI( liVector Y, fVector X, ui size );
  64. int  __vf   VF_choptoQI( qiVector Y, fVector X, ui size );
  65. int  __vf   VF_choptoUB( ubVector Y, fVector X, ui size );
  66. int  __vf   VF_choptoUS( usVector Y, fVector X, ui size );
  67. int  __vf   VF_choptoU(  uVector  Y, fVector X, ui size );
  68. int  __vf   VF_choptoUL( ulVector Y, fVector X, ui size );
  69.  
  70. #define VF_trunc      VF_chop
  71. #define VF_trunctoBI  VF_choptoBI
  72. #define VF_trunctoSI  VF_choptoSI
  73. #define VF_trunctoI   VF_choptoI
  74. #define VF_trunctoLI  VF_choptoLI
  75. #define VF_trunctoQI  VF_choptoQI
  76. #define VF_trunctoUB  VF_choptoUB
  77. #define VF_trunctoUS  VF_choptoUS
  78. #define VF_trunctoU   VF_choptoU
  79. #define VF_trunctoUL  VF_choptoUL
  80.  
  81. #if defined V_HUGE
  82.       #define   VF_roundtoUI    VF_roundtoUL
  83.       #define   VF_floortoUI    VF_floortoUL
  84.       #define   VF_ceiltoUI     VF_ceiltoUL
  85.       #define   VF_choptoUI     VF_choptoUL
  86.       #define   VF_trunctoUI    VF_trunctoUL
  87. #else
  88.       #define   VF_roundtoUI    VF_roundtoU
  89.       #define   VF_floortoUI    VF_floortoU
  90.       #define   VF_ceiltoUI     VF_ceiltoU
  91.       #define   VF_choptoUI     VF_choptoU
  92.       #define   VF_trunctoUI    VF_trunctoU
  93. #endif
  94.  
  95. /********************  Comparisons ********************************/
  96.  
  97. void __vf   VF_cmp0(    fVector Y, fVector X, ui size );
  98. ui   __vf   VF_cmp_eq0( fVector Y, fVector X, ui size );
  99. ui   __vf   VF_cmp_ne0( fVector Y, fVector X, ui size );
  100. ui   __vf   VF_cmp_le0( fVector Y, fVector X, ui size );
  101. ui   __vf   VF_cmp_lt0( fVector Y, fVector X, ui size );
  102. ui   __vf   VF_cmp_ge0( fVector Y, fVector X, ui size );
  103. ui   __vf   VF_cmp_gt0( fVector Y, fVector X, ui size );
  104.  
  105. ui   __vf   VF_cmp_eq0ind( uiVector Ind, fVector X, ui size );
  106. ui   __vf   VF_cmp_ne0ind( uiVector Ind, fVector X, ui size );
  107. ui   __vf   VF_cmp_le0ind( uiVector Ind, fVector X, ui size );
  108. ui   __vf   VF_cmp_lt0ind( uiVector Ind, fVector X, ui size );
  109. ui   __vf   VF_cmp_ge0ind( uiVector Ind, fVector X, ui size );
  110. ui   __vf   VF_cmp_gt0ind( uiVector Ind, fVector X, ui size );
  111.  
  112. void __vf   VF_cmpC(    fVector Y, fVector X, ui size, float C );
  113. ui   __vf   VF_cmp_eqC( fVector Y, fVector X, ui size, float C );
  114. ui   __vf   VF_cmp_neC( fVector Y, fVector X, ui size, float C );
  115. ui   __vf   VF_cmp_leC( fVector Y, fVector X, ui size, float C );
  116. ui   __vf   VF_cmp_ltC( fVector Y, fVector X, ui size, float C );
  117. ui   __vf   VF_cmp_geC( fVector Y, fVector X, ui size, float C );
  118. ui   __vf   VF_cmp_gtC( fVector Y, fVector X, ui size, float C );
  119.  
  120. ui   __vf   VF_cmp_eqCind( uiVector Ind, fVector X, ui size, float C );
  121. ui   __vf   VF_cmp_neCind( uiVector Ind, fVector X, ui size, float C );
  122. ui   __vf   VF_cmp_leCind( uiVector Ind, fVector X, ui size, float C );
  123. ui   __vf   VF_cmp_ltCind( uiVector Ind, fVector X, ui size, float C );
  124. ui   __vf   VF_cmp_geCind( uiVector Ind, fVector X, ui size, float C );
  125. ui   __vf   VF_cmp_gtCind( uiVector Ind, fVector X, ui size, float C );
  126.  
  127. void __vf   VF_cmpV(    fVector Z, fVector X, fVector Y, ui size );
  128. ui   __vf   VF_cmp_eqV( fVector Z, fVector X, fVector Y, ui size );
  129. ui   __vf   VF_cmp_neV( fVector Z, fVector X, fVector Y, ui size );
  130. ui   __vf   VF_cmp_leV( fVector Z, fVector X, fVector Y, ui size );
  131. ui   __vf   VF_cmp_ltV( fVector Z, fVector X, fVector Y, ui size );
  132. ui   __vf   VF_cmp_geV( fVector Z, fVector X, fVector Y, ui size );
  133. ui   __vf   VF_cmp_gtV( fVector Z, fVector X, fVector Y, ui size );
  134.  
  135. ui   __vf   VF_cmp_eqVind( uiVector Ind, fVector X, fVector Y, ui size );
  136. ui   __vf   VF_cmp_neVind( uiVector Ind, fVector X, fVector Y, ui size );
  137. ui   __vf   VF_cmp_leVind( uiVector Ind, fVector X, fVector Y, ui size );
  138. ui   __vf   VF_cmp_ltVind( uiVector Ind, fVector X, fVector Y, ui size );
  139. ui   __vf   VF_cmp_geVind( uiVector Ind, fVector X, fVector Y, ui size );
  140. ui   __vf   VF_cmp_gtVind( uiVector Ind, fVector X, fVector Y, ui size );
  141.  
  142. ui   __vf   VF_cmp_inclrange0C( fVector Y, fVector X, ui size, float C );
  143. ui   __vf   VF_cmp_exclrange0C( fVector Y, fVector X, ui size, float C );
  144. ui   __vf   VF_cmp_inclrangeCC( fVector Y, fVector X, ui size, float CLo, float CHi );
  145. ui   __vf   VF_cmp_exclrangeCC( fVector Y, fVector X, ui size, float CLo, float CHi );
  146.  
  147. ui   __vf   VF_cmp_inclrange0Cind( uiVector Ind, fVector X, ui size, float C );
  148. ui   __vf   VF_cmp_exclrange0Cind( uiVector Ind, fVector X, ui size, float C );
  149. ui   __vf   VF_cmp_inclrangeCCind( uiVector Ind, fVector X, ui size, float CLo, float CHi );
  150. ui   __vf   VF_cmp_exclrangeCCind( uiVector Ind, fVector X, ui size, float CLo, float CHi );
  151.  
  152.  
  153. /********************  Standard Arithmetics   ***************************/
  154.  
  155. void  __vf  VF_equC( fVector X, ui size, float C );
  156. void  __vf  VF_equV( fVector Y, fVector X, ui size );
  157. void  __vf  VFx_equV( fVector Y, fVector X, ui size, float A, float B );
  158.  
  159. void  __vf  VF_addC(  fVector Y, fVector X, ui size, float C );
  160. void  __vf  VF_subC(  fVector Y, fVector X, ui size, float C );
  161. void  __vf  VF_subrC( fVector Y, fVector X, ui size, float C );
  162. void  __vf  VF_mulC(  fVector Y, fVector X, ui size, float C );
  163. void  __vf  VF_divC(  fVector Y, fVector X, ui size, float C );
  164. void  __vf  VF_divrC( fVector Y, fVector X, ui size, float C );
  165. void  __vf  VFx_divrC( fVector Y, fVector X, ui size, float A, float B, float C );
  166.  
  167. void  __vf  VF_addV(  fVector Z, fVector X, fVector Y, ui size );
  168. void  __vf  VF_subV(  fVector Z, fVector X, fVector Y, ui size );
  169. void  __vf  VF_subrV( fVector Z, fVector X, fVector Y, ui size );
  170. void  __vf  VF_mulV(  fVector Z, fVector X, fVector Y, ui size );
  171. void  __vf  VF_divV(  fVector Z, fVector X, fVector Y, ui size );
  172. void  __vf  VF_divrV(  fVector Z, fVector X, fVector Y, ui size );
  173.  
  174. void  __vf  VFx_addV(  fVector Z, fVector X, fVector Y, ui size, float A, float B );
  175.                               /* Z = (A*X+B) + Y  */
  176. void  __vf  VFx_subV(  fVector Z, fVector X, fVector Y, ui size, float A, float B );
  177. void  __vf  VFx_subrV( fVector Z, fVector X, fVector Y, ui size, float A, float B );
  178. void  __vf  VFx_mulV(  fVector Z, fVector X, fVector Y, ui size, float A, float B );
  179. void  __vf  VFx_divV(  fVector Z, fVector X, fVector Y, ui size, float A, float B );
  180. void  __vf  VFx_divrV( fVector Z, fVector X, fVector Y, ui size, float A, float B );
  181.  
  182. void  __vf  VFs_addV(  fVector Z, fVector X, fVector Y, ui size, float C ); /* Z=C*(X+Y) */
  183. void  __vf  VFs_subV(  fVector Z, fVector X, fVector Y, ui size, float C );
  184. void  __vf  VFs_subrV( fVector Z, fVector X, fVector Y, ui size, float C );
  185. void  __vf  VFs_mulV(  fVector Z, fVector X, fVector Y, ui size, float C );
  186. void  __vf  VFs_divV(  fVector Z, fVector X, fVector Y, ui size, float C );
  187. void  __vf  VFs_divrV( fVector Z, fVector X, fVector Y, ui size, float C );
  188.  
  189. void  __vf  VF_maxC(   fVector Y, fVector X, ui size, float C );
  190. void  __vf  VF_minC(   fVector Y, fVector X, ui size, float C );
  191. void  __vf  VF_limit(  fVector Y, fVector X, ui size, float Min, float Max );
  192. void  __vf  VF_flush0( fVector Y, fVector X, ui size, float AbsMin );
  193. void  __vf  VF_maxV(   fVector Z, fVector X, fVector Y, ui size );
  194. void  __vf  VF_minV(   fVector Z, fVector X, fVector Y, ui size );
  195. void  __vf  VF_modC(   fVector Y, fVector X, ui size, float C );
  196. void  __vf  VF_modV(   fVector Z, fVector X, fVector Y, ui size );
  197. void  __vf  VFx_modV(  fVector Z, fVector X, fVector Y, ui size, float A, float B );
  198. #define     VF_fmodC    VF_modC
  199. #define     VF_fmodV    VF_modV
  200. #define     VFx_fmodV   VFx_modV
  201.  
  202. void __vf  VF_redC(  fVector Y, fVector X, ui size, float C );
  203. void __vf  VF_redV(  fVector Z, fVector X, fVector Y, ui size );
  204. void __vf  VFx_redV( fVector Z, fVector X, fVector Y, ui size, float A, float B );
  205. void __vf  VF_visC(  fVector Y, fVector X, ui size, float C );
  206. void __vf  VF_visV(  fVector Z, fVector X, fVector Y, ui size );
  207. void __vf  VFx_visV( fVector Z, fVector X, fVector Y, ui size, float A, float B );
  208. void __vf  VF_hypC(  fVector Y, fVector X, ui size, float C );
  209. void __vf  VF_hypV(  fVector Z, fVector X, fVector Y, ui size );
  210. void __vf  VFx_hypV( fVector Z, fVector X, fVector Y, ui size, float A, float B );
  211.  
  212. void __vf VF_lincomb( fVector Z, fVector X, fVector Y, ui size,
  213.                       float CX, float CY );  /* Z=CX*X+CY*Y */
  214.  
  215. #define VF_sgn    VF_cmp0
  216.  
  217. /******************** Accumulation (Y += X) ******************************/
  218.  
  219. void __vf VF_accV(   fVector Y, fVector  X, ui size );
  220. void __vf VF_accVBI( fVector Y, biVector X, ui size );
  221. void __vf VF_accVSI( fVector Y, siVector X, ui size );
  222. void __vf VF_accVI(  fVector Y, iVector  X, ui size );
  223. void __vf VF_accVLI( fVector Y, liVector X, ui size );
  224. void __vf VF_accVQI( fVector Y, qiVector X, ui size );
  225. void __vf VF_accVUB( fVector Y, ubVector X, ui size );
  226. void __vf VF_accVUS( fVector Y, usVector X, ui size );
  227. void __vf VF_accVU(  fVector Y, uVector  X, ui size );
  228. void __vf VF_accVUL( fVector Y, ulVector X, ui size );
  229. #if defined V_HUGE
  230.     #define VF_accVUI  VF_accVUL
  231. #else
  232.     #define VF_accVUI  VF_accVU
  233. #endif
  234.  
  235. /***************** Functions of a sub-set of elements  ********************/
  236.  
  237. void  __vf  VF_subvector_equC(  fVector Y, ui subsiz, unsigned samp, float C );
  238. void  __vf  VF_subvector_equV(  fVector Y, ui subsiz, unsigned samp, fVector X );
  239.  
  240. void  __vf  VF_subvector_addC(  fVector Y, ui subsiz, unsigned samp, float C );
  241. void  __vf  VF_subvector_subC(  fVector Y, ui subsiz, unsigned samp, float C );
  242. void  __vf  VF_subvector_subrC( fVector Y, ui subsiz, unsigned samp, float C );
  243. void  __vf  VF_subvector_mulC(  fVector Y, ui subsiz, unsigned samp, float C );
  244. void  __vf  VF_subvector_divC(  fVector Y, ui subsiz, unsigned samp, float C );
  245. void  __vf  VF_subvector_divrC( fVector Y, ui subsiz, unsigned samp, float C );
  246.  
  247. void  __vf  VF_subvector_addV(  fVector Y, ui subsiz, unsigned samp, fVector X );
  248. void  __vf  VF_subvector_subV(  fVector Y, ui subsiz, unsigned samp, fVector X );
  249. void  __vf  VF_subvector_subrV( fVector Y, ui subsiz, unsigned samp, fVector X );
  250. void  __vf  VF_subvector_mulV(  fVector Y, ui subsiz, unsigned samp, fVector X );
  251. void  __vf  VF_subvector_divV(  fVector Y, ui subsiz, unsigned samp, fVector X );
  252. void  __vf  VF_subvector_divrV( fVector Y, ui subsiz, unsigned samp, fVector X );
  253.  
  254.  
  255.  
  256. /*********************  Mathematical Functions ***********************/
  257.  
  258. int   __vf   VF_abs( fVector Y, fVector X, ui size );
  259. int   __vf   VF_neg( fVector Y, fVector X, ui size );
  260. int   __vf   VF_inv( fVector Y, fVector X, ui size );
  261. int   __vf   VFx_inv( fVector Y, fVector X, ui size, float A, float B );
  262. int   __vf   VF_intfrac( fVector Int, fVector Frac, fVector X, ui size );
  263. #define      VF_modf    VF_intfrac
  264. int   __vf   VF_mantexp( fVector Mant, iVector Exp, fVector X, ui size );
  265. #define      VF_frexp   VF_mantexp
  266.  
  267. int  __vf    VF_hypotC( fVector Y, fVector X, ui size, float C );
  268. int  __vf    VF_hypotV( fVector Z, fVector X, fVector Y, ui size );
  269. int  __vf    VFx_hypotV( fVector Z, fVector X, fVector Y, ui size, float A, float B );
  270.  
  271. int  __vf    VF_scale2( fVector Y, fVector X, ui size, int expo );
  272. int  __vf    VF_scale10( fVector Y, fVector X, ui size, int expo );
  273. #define      VF_ldexp    VF_scale2
  274.  
  275. int  __vf    VF_square( fVector Y, fVector X, ui size );
  276. int  __vf    VFx_square( fVector Y, fVector X, ui size, float A, float B );
  277. int  __vf    VF_cubic( fVector Y, fVector X, ui size );
  278. int  __vf    VFx_cubic( fVector Y, fVector X, ui size, float A, float B );
  279. int  __vf    VF_quartic( fVector Y, fVector X, ui size );
  280. int  __vf    VFx_quartic( fVector Y, fVector X, ui size, float A, float B );
  281. int  __vf    VF_poly( fVector Y, fVector X, ui size, fVector Coeff, unsigned deg );
  282. int  __vf    VFx_poly( fVector Y, fVector X, ui size, fVector Coeff, unsigned deg, float A, float B );
  283. int  __vf    VF_ipow( fVector Y, fVector X, ui size, int ipow );
  284. int  __vf    VFx_ipow( fVector Y, fVector X, ui size, int ipow, float A, float B, float C );
  285.                            /*  ipow = integer power of x */
  286.  
  287.        /* extra fast integer powers: "unprotected", without error handling: */
  288. int  __vf    VFu_square( fVector Y, fVector X, ui size );
  289. int  __vf    VFux_square( fVector Y, fVector X, ui size, float A, float B );
  290. int  __vf    VFu_cubic( fVector Y, fVector X, ui size );
  291. int  __vf    VFux_cubic( fVector Y, fVector X, ui size, float A, float B );
  292. int  __vf    VFu_quartic( fVector Y, fVector X, ui size );
  293. int  __vf    VFux_quartic( fVector Y, fVector X, ui size, float A, float B );
  294. int  __vf    VFu_poly( fVector Y, fVector X, ui size, fVector Coeff, unsigned deg );
  295. int  __vf    VFux_poly( fVector Y, fVector X, ui size, fVector Coeff, unsigned deg, float A, float B );
  296. int  __vf    VFu_ipow( fVector Y, fVector X, ui size, int ipow );
  297. int  __vf    VFux_ipow( fVector Y, fVector X, ui size, int ipow, float A, float B, float C );
  298.  
  299. int  __vf    VF_ipow2(  fVector Y, iVector X, ui size );
  300. int  __vf    VF_ipow10( fVector Y, iVector X, ui size );
  301.                           /* ipow2 and ipow10: integer powers of 2 and 10 */
  302.  
  303. int  __vf   VF_pow(    fVector Y, fVector X, ui size, float expo );
  304. int  __vf   VFx_pow(   fVector Y, fVector X, ui size, float expo, float A, float B, float C );
  305.  
  306. int  __vf   VF_pow2(   fVector Y, fVector X, ui size );
  307. int  __vf   VFx_pow2(  fVector Y, fVector X, ui size, float A, float B, float C );
  308. int  __vf   VF_pow10(  fVector Y, fVector X, ui size );
  309. int  __vf   VFx_pow10( fVector Y, fVector X, ui size, float A, float B, float C );
  310.             /* pow2 and pow10: basis 2 or 10 raised to power x */
  311.  
  312. int  __vf   VF_sqrt(  fVector Y, fVector X, ui size );
  313. int  __vf   VFx_sqrt( fVector Y, fVector X, ui size, float A, float B, float C );
  314.  
  315. int  __vf   VF_log(    fVector Y, fVector X, ui size );
  316. int  __vf   VF_log2(   fVector Y, fVector X, ui size );
  317. int  __vf   VF_log10(  fVector Y, fVector X, ui size );
  318. #define     VF_ln      VF_log
  319. int  __vf   VFx_log(   fVector Y, fVector X, ui size, float A, float B, float C );
  320. int  __vf   VFx_log2(  fVector Y, fVector X, ui size, float A, float B, float C );
  321. int  __vf   VFx_log10( fVector Y, fVector X, ui size, float A, float B, float C );
  322. #define     VFx_ln     VFx_log
  323.  
  324. int  __vf   VF_OD( fVector OD, fVector X, fVector X0, ui size );  /* OD = log10( X0/X ) */
  325. int  __vf   VF_ODwDark( fVector OD, fVector X, fVector XDark,
  326.                         fVector X0, fVector X0Dark, ui size );
  327. void __vf   VF_setODThresh( float minX, float minX0 );
  328.  
  329. int  __vf   VF_exp(   fVector Y, fVector X, ui size );
  330. int  __vf   VFx_exp(  fVector Y, fVector X, ui size, float A, float B, float C );
  331. int  __vf   VF_expArbBase(  fVector Y, fVector X, ui size, float Base );
  332. int  __vf   VFx_expArbBase( fVector Y, fVector X, ui size, float Base,
  333.                             float A, float B, float C );
  334. int  __vf   VF_expc(  fVector Y, fVector X, ui size );
  335. int  __vf   VFx_expc( fVector Y, fVector X, ui size, float A, float B, float C );
  336.                 /* expc(x) = 1 - exp(x)  */
  337. int  __vf   VF_expmx2(  fVector Y, fVector X, ui size );
  338. int  __vf   VFx_expmx2( fVector Y, fVector X, ui size, float A, float B, float C );
  339.                 /* expmx2(x) = exp( -x**2 )  */
  340. int  __vf   VF_exp2(  fVector Y, fVector X, ui size );
  341. int  __vf   VFx_exp2( fVector Y, fVector X, ui size, float A, float B, float C );
  342. int  __vf   VF_exp10(  fVector Y, fVector X, ui size );
  343. int  __vf   VFx_exp10( fVector Y, fVector X, ui size, float A, float B, float C );
  344.                 /*  exp2 and exp10 used as synonyms for pow2 and pow10 */
  345.  
  346. int  __vf   VF_erf(     fVector Y, fVector X, ui size );
  347. int  __vf   VFx_erf(    fVector Y, fVector X, ui size, float A, float B, float C );
  348. int  __vf   VF_erfc(    fVector Y, fVector X, ui size );
  349. int  __vf   VFx_erfc(   fVector Y, fVector X, ui size, float A, float B, float C );
  350. int  __vf   VF_Gauss(   fVector Y, fVector X, ui size, float Wid, float Cent, float C );
  351. #define VF_gauss VF_Gauss
  352. int  __vf   VF_Lorentz( fVector Y, fVector X, ui size, float Wid, float Cent, float C );
  353. #define VF_lorentz VF_Lorentz
  354.  
  355. int  __vf   VF_sin(     fVector Y, fVector X, ui size );
  356. int  __vf   VFx_sin(    fVector Y, fVector X, ui size, float A, float B, float C );
  357. int  __vf   VF_cos(     fVector Y, fVector X, ui size );
  358. int  __vf   VFx_cos(    fVector Y, fVector X, ui size, float A, float B, float C );
  359. int  __vf   VF_sincos(  fVector Sin, fVector Cos, fVector X, ui size );
  360. int  __vf   VFx_sincos( fVector Sin, fVector Cos, fVector X, ui size, float A, float B, float C );
  361.  
  362. int  __vf   VF_tan(     fVector Y, fVector X, ui size );
  363. int  __vf   VFx_tan(    fVector Y, fVector X, ui size, float A, float B, float C );
  364. int  __vf   VF_cot(     fVector Y, fVector X, ui size );
  365. int  __vf   VFx_cot(    fVector Y, fVector X, ui size, float A, float B, float C );
  366.  
  367. int  __vf   VF_sec(     fVector Y, fVector X, ui size );
  368. int  __vf   VFx_sec(    fVector Y, fVector X, ui size, float A, float B, float C );
  369. int  __vf   VF_cosec(   fVector Y, fVector X, ui size );
  370. int  __vf   VFx_cosec(  fVector Y, fVector X, ui size, float A, float B, float C );
  371.  
  372. int  __vf   VF_sin2(    fVector Y, fVector X, ui size );
  373. int  __vf   VFx_sin2(   fVector Y, fVector X, ui size, float A, float B, float C );
  374. int  __vf   VF_cos2(    fVector Y, fVector X, ui size );
  375. int  __vf   VFx_cos2(   fVector Y, fVector X, ui size, float A, float B, float C );
  376. int  __vf   VF_sincos2( fVector Sin, fVector Cos, fVector X, ui size );
  377. int  __vf   VFx_sincos2( fVector Sin, fVector Cos, fVector X, ui size, float A, float B, float C );
  378.  
  379. int  __vf   VF_tan2(     fVector Y, fVector X, ui size );
  380. int  __vf   VFx_tan2(    fVector Y, fVector X, ui size, float A, float B, float C );
  381. int  __vf   VF_cot2(     fVector Y, fVector X, ui size );
  382. int  __vf   VFx_cot2(    fVector Y, fVector X, ui size, float A, float B, float C );
  383. int  __vf   VF_sec2(     fVector Y, fVector X, ui size );
  384. int  __vf   VFx_sec2(    fVector Y, fVector X, ui size, float A, float B, float C );
  385. int  __vf   VF_cosec2(   fVector Y, fVector X, ui size );
  386. int  __vf   VFx_cosec2(  fVector Y, fVector X, ui size, float A, float B, float C );
  387.  
  388.  /*  reduced-range sine and cosine for -2Pi <= x <= +2Pi */
  389. int  __vf   VFr_sin(     fVector Y, fVector X, ui size );
  390. int  __vf   VFrx_sin(    fVector Y, fVector X, ui size, float A, float B, float C );
  391. int  __vf   VFr_cos(     fVector Y, fVector X, ui size );
  392. int  __vf   VFrx_cos(    fVector Y, fVector X, ui size, float A, float B, float C );
  393. int  __vf   VFr_sincos(  fVector Sin, fVector Cos, fVector X, ui size );
  394. int  __vf   VFrx_sincos( fVector Sin, fVector Cos, fVector X, ui size, float A, float B, float C );
  395. int  __vf   VFr_sin2(     fVector Y, fVector X, ui size );
  396. int  __vf   VFrx_sin2(    fVector Y, fVector X, ui size, float A, float B, float C );
  397. int  __vf   VFr_cos2(     fVector Y, fVector X, ui size );
  398. int  __vf   VFrx_cos2(    fVector Y, fVector X, ui size, float A, float B, float C );
  399. int  __vf   VFr_sincos2(  fVector Sin, fVector Cos, fVector X, ui size );
  400. int  __vf   VFrx_sincos2( fVector Sin, fVector Cos, fVector X, ui size, float A, float B, float C );
  401.  
  402. /* trigonometric functions of rational multiples of Pi: x = p/q * Pi */
  403. int  __vf   VF_sinrpi(   fVector Y, iVector P, ui size, int q );
  404. int  __vf   VF_cosrpi(   fVector Y, iVector P, ui size, int q );
  405. int  __vf   VF_sincosrpi( fVector Sin, fVector Cos, iVector P, ui size, int q );
  406. int  __vf   VF_tanrpi(   fVector Y, iVector P, ui size, int q );
  407. int  __vf   VF_cotrpi(   fVector Y, iVector P, ui size, int q );
  408. int  __vf   VF_secrpi(   fVector Y, iVector P, ui size, int q );
  409. int  __vf   VF_cosecrpi( fVector Y, iVector P, ui size, int q );
  410.  
  411. int  __vf   VF_sinrpi2(  fVector Y, iVector P, ui size, int q );
  412. int  __vf   VF_cosrpi2(  fVector Y, iVector P, ui size, int q );
  413. int  __vf   VF_sincosrpi2( fVector Sin, fVector Cos, iVector P, ui size, int q );
  414. int  __vf   VF_tanrpi2(  fVector Y, iVector P, ui size, int q );
  415. int  __vf   VF_cotrpi2(  fVector Y, iVector P, ui size, int q );
  416. int  __vf   VF_secrpi2(  fVector Y, iVector P, ui size, int q );
  417. int  __vf   VF_cosecrpi2( fVector Y, iVector P, ui size, int q );
  418.  
  419. int  __vf   VF_sinrpi3(  fVector Y, iVector P, ui size, int q );
  420. int  __vf   VF_cosrpi3(  fVector Y, iVector P, ui size, int q );
  421. int  __vf   VF_sincosrpi3( fVector Sin, fVector Cos, iVector P, ui size, int q );
  422. int  __vf   VF_tanrpi3(  fVector Y, iVector P, ui size, int q );
  423. int  __vf   VF_cotrpi3(  fVector Y, iVector P, ui size, int q );
  424. int  __vf   VF_secrpi3(  fVector Y, iVector P, ui size, int q );
  425. int  __vf   VF_cosecrpi3( fVector Y, iVector P, ui size, int q );
  426.  
  427. int  __vf   VF_sinc(     fVector Y, fVector X, ui size );
  428. int  __vf   VFx_sinc(    fVector Y, fVector X, ui size, float A, float B, float C );
  429. int  __vf   VF_Kepler(   fVector Y, fVector X, ui size, float T, float e );
  430. int  __vf   VFx_Kepler(  fVector Y, fVector X, ui size, float T, float e,
  431.                          float A, float B );
  432. #define VF_kepler  VF_Kepler
  433. #define VFx_kepler VFx_Kepler
  434.  
  435. int  __vf   VF_asin(    fVector Y, fVector X, ui size );
  436. int  __vf   VFx_asin(   fVector Y, fVector X, ui size, float A, float B, float C );
  437. int  __vf   VF_acos(    fVector Y, fVector X, ui size );
  438. int  __vf   VFx_acos(   fVector Y, fVector X, ui size, float A, float B, float C );
  439. int  __vf   VF_atan(    fVector Y, fVector X, ui size );
  440. int  __vf   VFx_atan(   fVector Y, fVector X, ui size, float A, float B, float C );
  441. int  __vf   VF_atan2(   fVector Z, fVector X, fVector Y, ui size );
  442. int  __vf   VFx_atan2(  fVector Z, fVector X, fVector Y, ui size, float A, float B, float C );
  443.  
  444. int  __vf   VF_sinh(    fVector Y, fVector X, ui size );
  445. int  __vf   VFx_sinh(   fVector Y, fVector X, ui size, float A, float B, float C );
  446. int  __vf   VF_cosh(    fVector Y, fVector X, ui size );
  447. int  __vf   VFx_cosh(   fVector Y, fVector X, ui size, float A, float B, float C );
  448. int  __vf   VF_tanh(    fVector Y, fVector X, ui size );
  449. int  __vf   VFx_tanh(   fVector Y, fVector X, ui size, float A, float B, float C );
  450. int  __vf   VF_coth(    fVector Y, fVector X, ui size );
  451. int  __vf   VFx_coth(   fVector Y, fVector X, ui size, float A, float B, float C );
  452. int  __vf   VF_sech(    fVector Y, fVector X, ui size );
  453. int  __vf   VFx_sech(   fVector Y, fVector X, ui size, float A, float B, float C );
  454. int  __vf   VF_cosech(  fVector Y, fVector X, ui size );
  455. int  __vf   VFx_cosech( fVector Y, fVector X, ui size, float A, float B, float C );
  456. int  __vf   VF_sech2(   fVector Y, fVector X, ui size );
  457. int  __vf   VFx_sech2(  fVector Y, fVector X, ui size, float A, float B, float C );
  458.  
  459. #ifdef __cplusplus
  460. }
  461. #endif
  462.  
  463.  
  464. #endif /* __VFMATH_H */
  465.